/*
 * AC
 * DP
 **/
#include <stdio.h>

#define max(a, b) ((a) > (b) ? (a) : (b))

int get_len(int i, int j);

int h[100][100][2];
int r, c;
int main(int argc, char **argv)
{
	int i, j;
	int ret = 0;

	scanf("%d %d", &r, &c);
	for (i = 0; i < r; i++) {
		for (j = 0; j < c; j++) {
			scanf("%d", &h[i][j][0]);
		}
	}
	for (i = 0; i < r; i++)
		for (j = 0; j < c; j++) {
			h[i][j][1] = get_len(i, j);
			if (ret < h[i][j][1])
				ret = h[i][j][1];
		}
	printf("%d\n", ret);
	return 0;
}

int get_len(int i, int j)
{
	int up = 0, down = 0, right = 0, left = 0;
	int ret;

	if (i + 1 < r && h[i + 1][j][0] < h[i][j][0]) {
		if (!h[i + 1][j][1])
			down = get_len(i + 1, j);
		else down = h[i + 1][j][1];
	}
	if (i - 1 >= 0 && h[i - 1][j][0] < h[i][j][0]) {
		if (!h[i - 1][j][1])
			up = get_len(i - 1, j);
		else up = h[i - 1][j][1];
	}
	if (j + 1 < c && h[i][j + 1][0] < h[i][j][0]) {
		if (!h[i][j + 1][1])
			right = get_len(i, j + 1);
		else right = h[i][j + 1][1];
	}
	if (j - 1 >= 0 && h[i][j - 1][0] < h[i][j][0]) {
		if (!h[i][j - 1][1])
			left = get_len(i, j - 1);
		else left = h[i][j - 1][1];
	}
	ret = max(up, down);
	ret = max(ret, right);
	ret = max(ret, left);
	ret++;

	return ret;
}
